Hive 报错 INSERT INTO “PARTITION |
您所在的位置:网站首页 › param error -- title invalid › Hive 报错 INSERT INTO “PARTITION |
问题背景
Hive 中加工了几张大表, 每张都大约有 350 个字段左右. 并且因为业务原因每个字段都比较长 (大约20个字符左右, 有长有短, 最长可达30多个字符). 加工完成, 多次确认不存在语法错误后运行, 仍然报错. 此时,这几张运行失败的表有共同特点, 可以作为后续处理失败的突破点: 每张表的字段很多, 且每个字段都很长. 报错信息[ERROR] Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.MoveTask. MetaException(message:Put request failed : INSERT INTO "PARTITION_PARAMS" ("PARAM_VALUE","PART_ID","PARAM_KEY") VALUES (?,?,?) ) 问题定位通过后台日志发现具体报错信息: ![]() 经过一番分析, 原来是 Hive 在元数据库中对每张表所有字段长度的累加总长度有限制, 如上图为 varchar(4000). 而我们今天加工的几张表字段总长≈350*20=7000, 导致实际存储字段总长大于定义. 解决修改元数据库中的 PARTITION_PARAMS 表 PARAM_VALUE 字段对应值: alter table "PARTITION_PARAMS" alter column "PARAM_VALUE" type varchar(8000);至此, 再次执行则均运行成功! 或者, 另一种处理思路: 加工太大的表可以使用拆分成几个小表, 在使用时再通过主键关联. |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |